VERSION HISTORY (PART 1): --------------------------+ History From May, 1999 to January, 2000 -----------------------------------------------------------------------+ Version .50 (Released Jan. 2000) Many small tweaks. The Background Filter used in dialogs shades more but is slower. This is a temp fix. I plan on offering a few completely new Filters. These will use bltfast (faster). You can now Disband NPC's from the party from the Character Stats Panel. This will remove the displayed character from the party. Once removed, the character will not rejoin again by choice. When a character is being considered for disbanding (you'll be asked if your sure) it will determine how hostile the environment is and act appropiately. i.e If you leave a character in the middle of an enemy camp it will act rudely and may even attack the party. Leave a character somewhere safe and it will be happy. Player controlled characters can not be disbanded. The two Status Panels on the right edge of the screen has been shifted to the left a tad to allow more room for text. Added AI to prevent NPC's from walking off the map. Vendors with missing or currupted inventory now say that they've been robbed. This should be considered an error message unless the plot of the game actually has the Vendor being robbed of course. When switching control between Party Members their status panel now shows which player is controlling them or if their AI controlled. This is a lot more helpful then what was being displayed. Added Function Blast(x, y, damage, thrust). This is as cool as it sounds. All explosion type things will call this to create blast effects. Pressing Esc now brings up the Menu System. To exit the game use the File Panel. NPC's no longer take things high off the ground (on counter tops, walls etc) when they're not in a fight. Lots of changes with the HitMap. (The HitMap is what the engine looks at to see what kind of terrain something is on/over.) The HitMap is no longer loaded from a BMP file. It's now stored in a data file. In Build Mode the HitMap is in memory as a graphic as before, however in-game it is stored in a 2d array. This eliminates the need for GDI when checking the HitMap. Due to the nature of these MAP files I may implement some sort of RLE compression. That can always be added later though. Aside from load/save functions I also made two functions that convert the graphic version of the data to the array and vicversa. What this means is the engine can load BMP files and MAP files and convert one to the other and Write MAP files. Bottom Line: I can now create HitMaps in a graphics editor (Photoshop) and/or Build Mode. Being able to edit these in Build Mode makes things 100 times easier since the engine allows me to see how it effects things in real time. I can see on the fly if a hit-mapped-wall is lined up with the graphics of the game etc. Added The Monkey's Paw. When one of these is dropped on a dead character it may resurrect them. However, the character will suffer heavy loss to a random stat. The Paw will not always work. i.e. If the character has been dead for a long time, is no longer in one piece etc. Fixed a bug causing character dialog to save wrong. Upgraded Item Spot Plot (Tool for making characters) to Direct Draw 7. Added mouse button support to Item Spot Plot. The source image for the items was 1 pixel too wide. This may or may not have slightly degraded some graphics. If it did it was too little to be noticeable. In any event it's be corrected. Removed some debugging keys I forgot existed. Doh! Fixed problems with Character Agl not loading/saving correctly. Changed all that stuff I changed into Floats into Doubles. Added Def to the Character Stats Panel. Agl now ranges from 1.5 to 3.5 Jab's are no longer an automatic interrupt. So you can't pin someone by constantly Jabbing them. Blood Particles are no longer spawned when a hit does less then 5HP Damage. Added Potions. There are about ten different types which I won't document in detail. Effects range from increasing HP to blowing people up. Potions are used by giving them to yourself. Their effects may also be released if they are broken open i.e. Thrown against a wall. (You could heal a character by throwing a heal potion at them, although they would take some damage by being hit, any other characters nearby would also be effected.) Cleaned up TargetObject() Also added device support for it. Pressing the Give button will also select. This means you can use a potion on yourself simply by pressing Give twice (the cursor defaults to being over your own character). -----------------------------------------------------------------------+ Version .40 (Unreleased) Items can no longer be thrown through walls when the character throwing it is standing right up to it. Item's that are thrown can no longer hit the character that threw it (for whatever reason that may happen) Fixed a bug in the Character Panel causing it to start up displaying invalid or dead characters. This sometimes resulted in the game crashing as well. ully documented Build Mode. Weather or not Build Mode will be enabled for the public I still haven't desided. I've reworked Character movement a bit. Character Inertia (x,y only), Agl and Traction are now floating point values. This allows me to create more realistice movement and terrain types. This also allows for more varied Agl levels. For example, you'll be able to walk on ice and slide around. Being knocked back from a blow is calculated more accurately (the speed you end up traveling). Traction is no longer applied to characters that arn't moving since it'd have no effect. This may help speed the game up a bit when many characters are active because this operation involves division. Aborting the Targeting of an Object when making a Copy of another Object in Build Mode no longer causes a crash. High-Particles are now drawn over the Forground Map as well as Covers. Added Character stat Def (defence) which can range from 0 to 50. The higher it is the more damge the character can absorb. This will effect damage less if the character is hit from the side, and not at all if hit from behind. It also won't effect damage if the character is performing an action. Added numberpad and misc char support to NameObject(). Fixed a bug in Build Mode causing it to not show some Way Points that were actually there. Fixed a bug causing "Fatality" to show when the character wasn't killed due to the code not considering the hit character's Con. Can now edit dialog using Build Mode. This includes text seen when reading signs etc. Made functions that copy the stats from one item/character to another. These are mainly used in Build Mode to quickly make many of the same thing. Function TargetObject now accepts when the mouse button is released. This is so when another function using mouse input calls TargetObject the mouse button isn't still being held down on return. Fixed a memory leak that was over-writing the games own data. "Wrong type of ammo" no longer shows when the item isn't even a type of ammo. Removed "Out of Ammo" message when using a bow. New Item In Hand's name now displays when swapping items below sea level. Using Firearms fatigues more, Jab slightly less, Slash more. When changing formation In-Game, the formation position are displayed briefly. Added "Fatality" message when you kill someong with a long range attack. A new Cell won't load unless the character that left the original one is facing that way. This means if someone hit's you and you knock back, off the Cell, the new one won't load unless you try to walk in that direction. All Arrows that fall in water are now deleted. Fixed the bug in the Inventory Panel causing the game to crash. Damage numbers now show when the hit character is below sea level. Added Vendors. i.e. Shop Keepers, not like the player owned Vendors in UO. Like many other games they only deal with what's in your Inventory. They also won't buy items of little value. They give you 50% of the value of items that you sell to them. Made a function that saves items into a vendor's inventory (Build Mode). The same function can save it's current inventory. Cleaned up some issues with NameObject() The inferface code for the Formation Panel has been reworked. Fixed problem with the Menu's not opening. Cursors are now shaded to make them easy to see on any background. AI Party Members no longer care if they are "out matched" like other NPC's. This keeps them from fleeing Boss characters since the group together should be able to handle it. This does not mean Members won't flee when they're in trouble. Characters can now be cut in half in the last blow if various conditions are met. Some but not all of these conditions are: Attacker much have STR > 50 Attacker's weapon's Slash must be > 10 Attacker must be Slashing Victim must be normal proportions (not scaled) Random value must be met Some of these conditions may change and more may be added. This will be somewhat rare. In the event, the two halves Are usable items and may be picked up, thrown, placed in inventory etc. When in flight they also spawn blood which makes a nice mess everywhere. Enjoy! Fixed various bugs with Dialog Windows. I originally made it so I could position them anywhere on the screen. However I never tested this until now and it sprung up many problems. All this code has been reworked. Created "Universal Currency", this is the the form on money used in the game. It's symbol looks like a U and C nested together (niffty?) This little jobby has been added to both fonts. Removed ClearKeyboard() since it's no longer needed. Mouse control now uses Direct Input. This works much better! Added Mouse Sensitivity in Prefs. AI Party Members were cheating fatigue rules when they ran to formation. AI Party Members no longer hesitate when getting in water like other NPC's. Added a "Stay" formation (Press ~). When in Stay, AI Party Members will stay where they are instead of following you. If they leave that spot to fight they will return there when they're done or flee. In the Inventory Panel, selecting an arrow and then a Bow or Quiver will now reload it. If you don't want to reload but swap the two, select the bow or quiver first, then the arrow. Fixed a divide by zero bug when low level characters attacked. Fixed problem with AI characters rapidly picking up an item, throwing it, picking it back up again and throwing it... Added AI that handles Firearm use. NPC's now align themselves with their target to get a shot off. Note: Due to the spread of ShotGuns AI Party Members may be more harm then good with one. I figure if a player is lucky enough to get a ShotGun he'd want to use it himself anyway. Tweaked some graphics. i.e. water particles, blood splats... Party Members no longer target a character that has thrown something at it. This is to keep members from straying from the group. Added some more types of Bows. This includes a Cross-Bow. They all have nearly the same stats and all function the same. The Cross-Bow uses Arrows as there's no Bolts in the game. Fixed a minor bug in Build with the Item Cursor pointing about 5 pixels off. NPC's no longer collect Items of little value when they're not in a fight. This means Party Members don't go around collecting arrows etc. In a fighting situation NPC's will pickup anything around if they have no weapon. Item's shown in menu's now point in a direction based on their Category: Light Weapons: Up/Left Standard Weapons: Down Heavy Weapons: Up/Right Firearms: Right Animated Objects: Up Non-Directional Items: N/A Cells can now display the forground image as a Background Scroll that pans at a slower speed for depth effects. This also can give water a reflective look. In order to insure any screen resolution will work with this the exact speed of the scroll in relation with the the rest of the map may vary slightly from different resolutions. The reason for this is that resolutions higher then 800x600 would require more image then the scroll has to offer when scrolling at higher speeds (the fastest is can go is hald the speed everything else goes). To prevent this from happening a formula is ran on map-load that takes the requested speed (from the map's data file) VS the resolution and figures what speed would work best. The result of all this looks pretty damn good and doesn't show a noticeable performance drop. Added Terrain type Pit. This is a deep hole in the ground. Anything that falls in is dead/deleted. While in freefall, characters have no movement control or traction. Objects, including characters, can collide with the walls in the pit on their way down. A Background Scroll must be used in order for a Map to use Pit. Added AI to keep NPC's from walking into Pits. Added Mouse button support to Build Mode. AI Party Members now untarget if they are in a fight when there's an In-Game Formation Change (not when there's a change from within the menu system). AI Party Members will no Defend the party unless they are with the group. They will still consider attacking they they are directly attacked. -What these two changes mean is that while in battle you can change to a new formation to get better control of the battle. Once in that formation the Party will continue the fight from there. Added message " too heavy for belt". Party Member's altitude is no longer reset between Cells. Item stats are now displayed along the items image within the Inventory Panel and Vendor interface. This shows Jab (or Ammo) and Slash levels, Mass and the Value of the item. This info is onscreen for all items now, not just the one the cursor is over like before. This makes it easier to compare items. Added a Drop Item button to the Inventory Panel. Note that if and NPC was holding the item dropped theres a good chance he'll just pick it up again if it's worth anything. The Name of the Particle Type is now shown instead of it's number in Build Mode. Cleaned up Menu/Vendor Interface Functions a bit. Made some changes that allow easier methods for me to code as well as more solid and universal controls for the player. i.e. Pressing Manip on any device will act as "select" in a menu. Pressing Menu will cancel etc. I've also applied this functionality to more things like when you name a character, there's full device support. Pressing up/down on a gamepad will cycle through characters. Manip will confirm the name etc. The goal here is to make it as simple as possible to use these interfaces. You should be able to sit back in your couch and control most, if not all of the game via a game pad. CheckHitMap now checks to see if the location to check is off of the map. If so it checks the closest edge. GameDelay is slightly lowered between Cells to anticipate the next Cell runing slower then the one before it. Of course if it's not it may run a tad too fast for a second or two while it goes up again. But I figure it's better to run a tad fast then a tad slow. -----------------------------------------------------------------------+ Version .30 Added Direct Input 7... Up to 4 Players can now play. To toggle a Player in or out of the game press 1 for Player one, 2 for two etc. A Player can not join in if there isn't a Non-Player-Controlled Party Member open for use. On startup the game looks for input devices. If it finds any it will default their controls and bind to Players. If there isn't enough devices to go around, the leftover Players will be givin Keyboard control, however each player will need to configure different keys (they'll all be the same). I removed jumping from the game. I desided it would be of little to no use and could bring up some minor graphical issues later. The Options Panel now let's you select input devices for each player. Just click the player's device name to cycle through devices. Each one will have a number to the left of it. The Keyboard is always 1, any other devices will be numbered. This way if you have more then one of the same kind of device you can still tell them apart (they'll all have the same name). Options also let's you configure controlls for each player. This still could use a little work, it's functional but dosen't display all key "names", however all keys can be used. Converted to Direct Draw 7, this may increase game speed on some systems. Added Party Member AI. My goal is to make it as helpful to the player(s) as possible without getting in the way... I had it where AI Members would attack enemies on sight. This has been removed to allow more control to the player. (Hard to stealth around when dipshit is attacking everyone!) In general they will only engage a character if it's threatning the party. They will avoid/flee fighting if their HP or Con is low. Most NPC's now check to see if a friend is in the way before making an attack. Enemy characters have more tolerance (their more prone to hitting their friends). The only character's that do not do this check are Neutral Nostile's. Made new icon graphics for the menu system. Added Party Formations. You may now have up to 10 pre-made formations. Key's 0 - 9 on the keyboard each set a formation. When AI controlled Party- Members are not fighting they will get into the formation. Most of the time a standard circular formation would be fine, however there may be times when the player(s) may want a little more control. Examples: A mage could be positioned behind warriors to allow them time to cast. A circle pattern could be used to surround a single tough enemy. Long line's could defend against being flanked. Very wide patterns could be used to scatter everyone away. While in the menu system or targeting the display will always v-sinc regardless of the v-sinc setting. This is because the display refreashes much faster at these times, sometimes causing screen flicker. Firearms and ammo containers now show how much ammo they have left when viewed in Inventory. Fixed the "I See Dead People" bug (dead characters showing in the stats panel, then crashing the game). Fixed a bug causing NPC's not to throw items. It's now easier to disturb items with thrown items (try throwing something at an item hanging on a wall). Fixed some problems with the call to GameOver(). When switching control of characters the camera will now switch as well if it was tracking the original character. Fixed a bug causing Enemy Guards to target nearby dead characters. Re-Enabled the ability to pass between Cells. Also made it so the items being carried by the part are backed up before the Map's items are created. After the Map's items are created the party's are restored from the backups. The reason for this madness is because the Map's assign spicific item objects where'as the party could be holding anything -the Maps would overwrite the items held by the party. The reason I make the Map's items spicific is in case I add scripts in the game, which would require this. Increased the max number of items from 50 to 58. This is to insure there's enough unused item objects during operations like the above and when items are swapped around in inventory. (Maps can only assign 50) Right clicking in the menu system will close it (a'la UO) All particles are now killed between Cells. Fixed various little bugs. -----------------------------------------------------------------------+ Version .25 (Unreleased) Added the menu system, which is pretty simple. There's a few panels, one for Inventory, Character Stats, Options, and File: Inventory displays all items in Inventory as well as the ones held by members of your party. In here you can swap items around etc. Once your back in the game any characters involved in an item swap will be delayed from action for a short time. During this time they will be open for attack. The swap operations also check to see if a character is able to hold an item it is givin etc. Remember weight limitations when equiping characters. Character Stats displays all stats of the character from HP to each of it's magic levels. You can click through each of the characters and also disband characters from here. Options let's you change most game options. This will later bew expanded on to allow the user to change things like fonts and window types etc. File let's you load and save games. It's also where you Exit the game. There will now be up to 20 spells instead of 15, although some of these are still unknown. Fixed a bug with the character control switching. Also made this function handle the camera tracking (before the code that called it had to). Cleaned up the way the camera pans when editing Way Points in Build Mode. Structures (the graphic kind) are now 128 pixels in height. This allows a tad more freedom with graphics and makes for happy bit shifting. Items are now set as Disturbed when thrown/dropped. Normally they already are but there's a few occasions where they arn't. This is mainly a safeguard. Finished playing around with prototype graphics. The real stuff is on it's way! Fixed a bug with structures. Fixed a similar bug with covers. You can no longer Disarm someone with a items with Mass < 5. Such items include daggers and spears. Character now have dialog. Walking up to a character and pressing the Spacebar will display anything they have to say. Some characters may ignore you however. And any character in a fight will also ignore your chat. Some characters will take interest in Joining your party and may ask if they may. You'll see "[Y/N]" at the end of their dialog. Pressing N will decline. Pressing Y will accept. -----------------------------------------------------------------------+ Version .20 (Unreleased) NPC's will never throw an ammo container if it holds ammo. Made Smoke particles move more realistic. Toned down most hit damage figures. This may not be as realistic but will add to gameplay. Added a Cell Timer. This will allow for the scripting of events in some Cells. DistanceBetween(c1, c2) which returns the distence between two characters was returning slightly incorrect values -checking in a diamond shaped pattern around the character. This has been fix to a circular pattern = true distance. This effects many things like Targeting with Range restrictions and many AI functions. Added JoinParty(c) which sets up a character and adds it to the player's party. Note this does not "convert" a character object to a "party member", it activates a new character, copys the old one's values and graphics then deletes the old one. The reasoning behind this is because the game treats characters 0 - 3 differently in some cases. i.e. You can play as them (see below). Once a character joins the party a Status Panel is also binded to the character. Added the ability to switch player control between Party Members. When a Player Controlled Character dies control is passed to another party member. If all other party members are Player Controlled the player may take control from another player or sit out until a new character joins the party. If all Party Members are dead the game is over. Added Character Pickup Level 3 = Character Can't Pick Items Up. This is assigned to characters that have no hands for example (i.e. birds) NPC's with Level 3 pickup know they can't pickup items thus won't LookForItem. Added Targeting of Objects. Currently this is done using the mouse but I'll be adding the ability to target with directional buttons. This is because I'm going for a "console- like feel" and will be supporting game pads. The game will eventually be playable using nothing but a pad. So what's Targeting? It allows you to select Character/Items for various tasks. Most importantly, Magic. While Targeting the game pauses and you get a cursor. Placing the cursor over a valid target causes it to change color. It's normally White, Red means you can Target it, Blue means it's someone in your party and Green means it's an Item. If the Target must be within a range you'll see a circle around your character. Added the ability to Give Items to other characters. This uses the Targeting method above. If the character is in close range and doesn't reject it, the Item in your hand will be givin to the Target. The target will normally give some kind of responce (it it's an NPC), Giving valuables to Enemies may keep them off your back or even get them to join your party! Fixed "The Death Grip Bug"! This was causing some characters to have a death grip on their items when they died. Build Mode integrated into the engine instead of a seprarate windows app. It now loads and saves etc. It's complete unless I add some little things later on. Cleaned up the AI a lot. Guards work much better now. Fixed issues with throwing items at guards. Items can now be in a state of Undisturbed/Disturbed. While Undisturbed physics don't effect the item. This allows objects to be elevated without falling down. i.e. torches hanging on walls etc. When an item hits a "wall" it does a check to see if any other items are near it. If so these items are Disturbed. (throwing a rock a painting on the wall will knock it down.) This may need tweaking. PickUpItem() now works differently as it is called instead of ChangePosition(). PickUpItem() will determine if the character needs to bend down to pick up an item or if it can grab it right away. If it needs to bend down the proper Position is set and that code will call PickUpItem() again to see if it can now pick it up. This means PickUpItem() is now called twice in a character grabs an item off the ground but this way it won't bend down if an item isn't even there etc. If a play is in a fight in presses the "pick up item" bottom by mistake it could mean death if he's bending over to pick up nothing. Wind can now be set as Random (and is the default). This causes it to change direction once in a while. Because it looked kinda odd with the perspective of the game it will only blow along x. Magic Spells and such can still effect it in other ways. Number Particles blow in the wind. (The ones that show Attack Damage) This was kind of a mistake but it looks pretty cool so I'm leaving it in :) Made is so the finishing blow to a character forces HP Particles to spawn. This is to insure you can see how much damage a character did with that blow. Added Firearms which include but are not limited to a Handgun, Shotgun and Bow & Arrows. All Firearms use ammo and can be reloaded. In addition, Arrows can be put in a Quiver to make carrying more practical, however it is possible to carry and load single arrows. This allows you to fire an arrow and recover it later. Ammo info is givin each time a gun is fired or when a Firearm is Reloaded. i.e. When Reloading a Shotgun you'll see "2 Reloaded 8", the 2 is how much ammo the gun now has in it and the 8 is how much "extra ammo" you have left. "extra ammo" is how much ammo you have on your secondary item spot. If you attempt to fire a Firearm while it has no ammo the character will Reload automatically. All Firearms are fired by pressing the Jab button. You can't do a typical Jab attack with a Firearm, even if it is out of ammo. You can Slash with one though. This may be the biggest disadvantage with using them as you have no fast attacks. Most of the time you'd also carrying ammo on your belt which keeps you from having a back-up weapon there. Re-coded the way Wind effects particles. This looks much more realistic then before. Guards will no longer targer their own kind. This was happening in cases when a guard would hit another guard by mistake while attacking it's true target. Item Mass of 101 is now valid. This allows for items that can't be picked up by anyone (since Character Mass maxes at 100). This will be ideal for items which are mounted to walls etc. Fallen leaves and some other particles now stain on the ground. Added "Animated Directional" Items. These are only two frames and used for things like torches, Scepters and other stuff that could use a generic flashing effect. NPC's know to pull out a loaded Firearm when attacking from long range. They also know how to use Firearms and will be happy to demonstrate! After seeing these guys in action you'll be glade attacking can only be done in four directions! NPC's know that walking around with a gun in their hand may alarm someone and thusly will put such weapons away if they don't plan on using them. If the engine doesn't find a forground graphic file when loading a map it now flags the map as having no forground instead of displaying an error. That way when the display function sees the flag it will skip the forground graphics code. What this does is allow for maps without any forground graphics (i.e. the middle of a dessert). These maps will be able to handle more objects and should overall run better. And making one is as easy as not supplying the graphics. rrows will occasionally break when they hit the ground. This is to keep the number of objects down during massive archery battles. -----------------------------------------------------------------------+ Version .11 Added Messaging to character status panels. Guards were targeting their self. Added Number Particles which show HP damage. Integrated the Map Builder into the game. This started as a separate app. but to make production faster and due to the existing functions in the engine this makes things a lot easier. Since all physics are in effect while editing and everything is rendered the same way you know exactly how things will look to the player. What the builder does is allow the placement of game objects like characters, items, structures etc. It also let's you config object attributes (like the STR of a character or damage ratings on weapons). This may or may not be available to the end user (if it's not the code will be REMOVED, not just disabled). Added Particle Spawns. These are invisible objects that create particles in various ways. i.e. leaves blowing out of trees or smoke coming from a chimney. Particles have been split into two major groups, low and high. Low particles (blood, some sparks) are drawn under Covers (roof-tops) while high ones are drawn over them (smoke, leaves). -----------------------------------------------------------------------+ Version .10b Fixed a bug with Slash damage. There was too much text in the help window in the default 640x480 mode. Sorry there's no excuse for that kind of mistake. Thrown Items now do less damage. You can no longer attack through walls. Strength vs Item Mass now effects hit damage, more so for slash attacks. Fatigue now effects running. Jabbing now fatigues you less then Slashing. Fatigue from attacking now caps around 30% (so you can attack all day and not die from it or something, of course the hits will be weak) Slashing someone now fatigues them (how much is based on the mass of the weapon). Added the Fatigue Bar. The bigger this is the worse off you are, the lighter your hits will be, the slower you'll run. Also, you can't score a critical a hit or disarm someone unless this is empty. If your Fatigue maxes out you will collapse and your condition will drop a level, unless it's already at the lowest in which case your HP will be chopped in half. HP Bar now flashes when you have less then 20HP (Demo starts you with 100) Speed related stuff: FrameSkipping - When enabled the display will only be updated every other cycle. This gives a huge speed boost. GameDelay - Typical Delay Loop to slow the game down. Frame Rate Regulation - This code toggles FrameSkipping and sets how long the GameDelay should be, based on the Average Framerate. It will try to maintain an Average of 20fps. Everything speed related has been adjusted for the new game speed, including Object speeds, Traction levels, Animation timing, gravity etc. etc. As with attacking, other actions can now only be done so often (i.e. you can't swap between items 30 times a second) Attacking NPC's now... Attempt to flank more. Will try to get around blocking objects. Occasionally run after you. Are Smarter in picking a weapon to attack with. and are overall tuned up. Cleaned up graphic issues seen in high color. Slashing is now slower. This is to give it more disadvantage to help balence it better. You'll have to take better care when using it since you leave yourself open. It also has a wide hit range so you need to make sure you don't hit other who you'd prefer to keep friendly. * Some things to note: All the characters in this demo have the same stats and have just about 50% of everything. What this means is it's pretty damn hard compared to how the game itself will be. In the game there will be times when you must fight many low-level characters at once and others where you and your party face a handfull or one boss type character. There will be a great deal of variety. 'm very pleased with the AI and the way it repeatedly kicks my ass. -----------------------------------------------------------------------+ Version .10 Optimized clipping code Fixed a bug with Method-2 that was causing an odd shift in the map graphics. Fixed a bug with Method-2:Auto Map Blocksize. This caused some screen modes to be "letterboxed" at the bottom of the screen when using Auto (default). Added Character Object code. All characters are now true C++ Objects. Added Item Object code. There is currently only one item type (a sword). Items currently don't clip at the screen edges. Added the following stats to characters (this will include enemies/monsters): Exp: Expirence points Str: Strength, this (among other things) will affect how much damage you do when attacking. HP: Current Hit Points Max HP: The Max HP a character can currently have MP: Current Magic Points Max MP: The Max MP Con: Condition, this effects the recharge rate of HP. This will be something like "Very Bad", "Poor", "Fine", "Good", "Great". A Critical Hit will cause it to go down a level. Healing, Eating, Sleeping etc. can bring it up again. If a character's Condition is negative it will slowly loose HP and bleed (leaving a trail). This does not effect MP. Agl: How fast the character can move Size: Generally characters are about the same size. However some bosses and such may be larger. Made the source graphics smaller for blood stains and such. This uses less memory and now there's more variety in their graphics. Characters can now die! Press F11 to kill the character your possessing, this can be done while in the air which is kinda cool (hold shift to run, press tab to jump then hit F11 :) F12 will resurrect a dead character. Note when a character plops on the ground it remains active for a few second (during this time the body may be moved, gibbed or whatever) after the body has come to rest for a while it is painted into the map (so the bodies, like stains, stay there until you leave the map = messy battle fields). When a character dies it drops all items it is currently carrying. Items can be thrown, dropped, swapped out, and used to attack. Character stats are in effect as well. Added a data file for each character graphics type defining Item Spot Locations, and an app to create them. What this means is that when the time comes, I can create character animations with greater ease while keeping the game itself efficient. Made it so characters check what kind of terrain they are over ever other cycle instead of every cycle. This code involves a GDI function (slow) so this should keep the game from slowing down much when many characters are Moving at the same time. Added Structure's (Building Walls, Tree Trunks etc.) Added Covers (Roof Tops, Tree cover etc.) Added Status Bars Added Temporary text (binded to status bars x,y) Currently uses TextOut (will have a graphic font) Tons of AI/character/item code, can't list it all. -----------------------------------------------------------------------+ Version .09 Added the CFG file! It's called prefs.cfg and is under the game1 sub-directory. It ain't pretty but it works well. Later if I deside to keep the format it's in I'll make an options panel. For now just open it in notepad: Down the left side is all the values you can change. They MUST be four digits. i.e. to set the color depth to 32-bit use 0032. The next column is the value's Name, next are valid values and the rightmost column is a small discription. If you don't know what something does, leave it be. Also make sure you use valid values or who knows what will happen. If you change something and the game quits working you probably chose a video mode that your hardware doesn't support. Fixed a good deal of bugs Replaced the "Loading..." text with a nice graphic complete with completion bar. Looks good and works good. Character sprites are now 100x100 (were 50x100) this will allow more freedom with action animations but it has also screwed the shadows (shadow size is based on the sprite size), I'll fix the shadows when I get around to it. The sprites also now know to use BltFast when possible to help counter any speed drop from the larger sprites. These may get changed yet again to 64x64 or 128x128 but we'll see. Added a new method to display the map graphics. This method is refered to as Method-2 as the older (Method-1) is still an option. Method-2 uses more memory but has improved game speed greatly. If you have a wup-ass video card Method-1 may be faster. Both methods look the same. Some people were having crashes/freezes when the demo exits. This should be fixed. Made a nice directory structure. This will make it easy to manage the many files that there will be. It will also allow the engine run one out of a selection of games. For example, if there's ever a sequel it will just be a collection of files that will be added to a new directory. This is similar to Quake TC's. The expiremental low detail level mode has been added although it wont be used. The only reason I'm leaving the code in is in the event the engine is later used for another game, the option will be there. Added Wind, which can blow particles and may have other effects later on. The Wind's speed and direction can change are any given time. During the game you can expect to see leaves and such blowing out of trees and such. I split the forground graphics and background graphics up and put them in their own files. This way if you don't have much video memory you still may be able to get one of them in video while the othe goes in RAM. I'm hoping this speeds up some systems. It is no longer possible to leave the map as before. Since there are no other maps in the demo yet. Added Character Clipping at the screen's edges. -----------------------------------------------------------------------+ Version .08 Improved shadow graphics Fixed a graphical problem with the dialog window. Added another Dialog Window Backdrop (darkens the background), this one's just a pattern of black dots but draws faster then the Blue Filter. Added a Detail Level option for the Blue Filter Dialog Window Backdrop. I found that a low detail still looks pretty cool while drawing much faster. After all it is just a backdrop, the text is what your going to be looking at anyway. -A note on these two Backdrops, they both use GDI to draw the Backdrop, which is why they draw slow (GDI is like a set of functions that let you draw stuff in windows, but it's slow as hell compaired to Direct Draw functions)... So when I learn more niffty Direct Draw stuff and alpha channels expect these to be improved. I'll also add a few more to pick from. There are now five borders for the Dialog Windows. Of course there's no way as of yet for you to pick the one you want, but they're there damnit! heh Particles are in! Press F7 to spray particles from your head! You'll get a different type each time you press it. Try to resist the urge to hold down F7 and making a huge mess untill you've seen em all :) ...More to come. -----------------------------------------------------------------------+ Version .07 Changed the way the map is stored which may allow it to be loaded into video memory on cards that couldn't before. If for any reason it can't the maps will still be stored in RAM. Characters now have width and height attributes. Hit detection and such will recognise this. This will allow for a great many things, mainly the stronger a character is the bigger is may look. If you build your character into a beefcake he can look as so. Smaller and larger versions of the same type of nemies will be possible i.e. wolf cubs, giant orcs etc. Since the width and height are separate this can also allow for some special effects and other cool stuff -can you say Shrink Ray? Press F2 - F6 to play :) Note: Scaling the character while he's in water can cause some graphical distortion. The fix for the problem could cause the game to run less efficient. I don't forsee this happening a lot (if ever) during play so I'm not going to worry about it for now. Character Z cords are now treated a bit different. Before if you walked into water a flag was set to tell the graphics code to use different animation frames for the character (which looked like the guy in water). This would mean having to draw "waist deep" and "neck deep" animations for everything; standing, walking, sword fighting, casting magic -the list goes on... All that in four directions! I wasn't thrilled about that idea so I figured a way for it to automatically show the right about of your top half depending on how deep the water is. So now instead of water staying at 0 Altitude it now goes negetive as the water (or lava, quicksand, kittens, whatever your in) get's deeper. This is Hella better. Now instead of just two levels of deep water as before it can be any value and it uses the same graphics as it would on land which saves time and memory! Dialog Triggers are coming along. You can now walk up to the sign and press SpaceBar to read it. Press SpaceBar again to close the window. Pressing F1 also pops up a window. This was mainly so I could test the window code without walking up to the sign but for the hell of it I made a lil help window out of it. Added a page-break char for the Dialog Windows (yay). I ripped the roof off the house. I'm going to make it an object (like the door) when I do the object code (which will allow for all kind's of items and things to mess with). Before I was blitting in a whole surface for roof- tops much like SoM, FF, Ultima and many other games do. This would be fine in 256 color but were dealing with 16+ bit so it's a bit slow (on my system anyway). A good side effect of this will be that when you walk into one building you wont see inside All of the buildings on the screen, only the one your in. So I'm happy with this idea although it's a tad more complicated to code. I now have a plot coming together, it's at the end of this file. -----------------------------------------------------------------------+ Version .06 (Unreleased) Text Windows and graphical Font(s) are in. The text has Word Wrap so it'll look correct in any resolution. The window's background is a blue color filter. The current method I'm using to do this effect is Very slow and temporary. Map graphics (background/forground stuff) will now try to load into video emory instead of RAM as before. If this fails it will still load into RAM as before. Those with beefy 2D cards should see a speed increase. I'd like to hear about any speed improvements you see! The reason it may not load isn't necessarily a lack of video memory. Some cards can't create really side surfaces. So I may break the maps up into three files and see if that helps any. -----------------------------------------------------------------------+ Version .05 Got other screen modes working. Any mode your hardware supports should work fine. As far as color depth. It will display less then 16bit but there may be some issues with the hit detection and it looks like hell. The game I make out of this will require 16, 24, or 32 bit. Added player momentum and traction. This will provide realistic movment later on. Right now you can't really notice it. Added Terrain Types (stuff like grass, shallow and deep water etc.) which effects traction and how some things behave. i.e. You can't jump while swimming in deep water etc. Added Gravity. Press SpaceBar to jump and you'll fall (yay). Jumping may be removed from the game itself or I may make it where you can't jump as high. This is because of some graphical issues but we'll see. Currently there is no jumping animation, so he looks like he's standing/walking in air. Character no longer walks in place. Added an ugly shadow for the player. I may make this translucent later if it's not too much trouble. -----------------------------------------------------------------------+ Version .04 Now supports 8, 16, 24(untested), and 32 bit color depths. The old coordinate system is gone. I've replaced it with a complex multi-coordinate system. Sounds impressive eh? Well it IS! Probably the most mathematical collection of code I've ever wrote. Basically what is does is provide a World Coordinate Plane and a Camera Coordinate Plane. In the last version characters were on the normal plane of the screen. The problem was if the (there was only one at the time but I'm planning ahead) point of view moved everything else was moved along with it (i.e. moving the background images didn't bring objects, and characters with it). Now all objects and character are bound to the World Plan which is completely independent of the point of view. So the camera can be moved freely. Added V-Sinc. HitMap has been added. This will/is used to handle the hit detection of anything in the world (walls, water, pits or whatever). All division and multiplication has been removed from the main loop of the program. Transparency problems should be fixed. A scaling problem was removed with the old cord. system. This bug was causing the background graphics to be stretched (the house looked really bad compaired to how it looks in the BMP). Lots of debugging stuff was added which is helping development. Various little things. -----------------------------------------------------------------------+ Version .03 First released version, Still needs a lot of work. The player graphic is temporary and will be replaced by an animated character. There is no hit detection yet. So you can walk through stuff. You will also be able to walk off the screen in places you normally wont be able to. So if you don't see an opening at the edge of the screen don't go through it since there may not be a map there (the screen will go black). Also, there's no clipping at the screen edges so if part of you goes offscreen you'll vanish til you move back. There are currently only three maps, all in a line like so, +---------+-----------+----------+ | | | | | lake | | stump | | | | | | | house | | +---------+-----------+----------+ You start at the lake map (actually In the lake!). You can't enter the house yet, I should have that in soon though. This thing's currently running at 800x600x32 which is kinda slow. I'm working on getting 640x480 and 16bit color. But for now it's a tad slow if you got crappy 2D hardware like me. I'll probably give out the source code to this when it's done for those who want it. I'm not sure how much I'll put into it yet so it may be a while. +---------------------------------------------------------------------------+ Plot in Development: In the far future there is a meeting on a small planet that has a magic crystal which they use as a means to communicate with other worlds. The crystal also provides a way of travel within the solar-system and is how they get there. Attending the meeting is a group or reps for various cultures within the solar-system. There is a group of large object that will pass through the galaxy many many years from then. It's expected to cause a disburbance in the systems that will kill most life in the galaxy. The meeting itself is to discuss the fate of the galaxy and what can be done. Partway through the meeting a clan of outcasts destroy the crystal. Communication is lost and they become stranded on the planet. They have no idea how the crystal works and if it could even be repaired. After a few days they give up realizing things are now out of their hands and it's time to move on. They settle on the planet and make it their home. They find out there are natives already living there. Some of them become aggressive towards the new visitors after their "Mekka Mekki" is destroyed and become a constant threat. Others that are more friendly welcome them and provide a place to call home. Many years pass and there is now a small population living on the planet, most of them continuing to live their old way of life. The original representatives are now aged and called "The Elders". One of the young men ask about the old time and how they got here only to discover the future of the galaxy is in danger. He gathers a party together to search for this Mekka Mekki and put a stop to the problem at hand. The rest of the story will unfold within the game... -Documented by Kevin Reems